/***********************************************************************
 * Module:  Dobavlja.java
 * Author:  Igor Spremo, Milan Stojkov
 * Purpose: Defines the Class Dobavlja
 ***********************************************************************/

package model.entity;

import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

/**
 * 
 * @author Igor Spremo, Milan Stojkov
 *
 */

@SuppressWarnings("serial")
public class Dobavlja implements Serializable {
	
	protected Integer id;
	protected float cena;
	protected int brojDobavljenihPloca;
	protected int datumDobavljanja;
	protected int verzija;

	protected Collection<VrstaPloce> vrstePloca;
	protected Collection<Saradnik> saradnici;

	public Collection<VrstaPloce> getVrstePloca() {
		if (vrstePloca == null)
			vrstePloca = new HashSet<VrstaPloce>();
		return vrstePloca;
	}

	public Iterator<VrstaPloce> getIteratorVrstePloca() {
		if (vrstePloca == null)
			vrstePloca = new HashSet<VrstaPloce>();
		
		return vrstePloca.iterator();
	}

	public void setVrstePloca(Collection<VrstaPloce> newVrstePloca) {
		removeAllVrstePloca();
		for (Iterator<VrstaPloce> iter = newVrstePloca.iterator(); iter
				.hasNext();)
			addVrstaPloce((VrstaPloce) iter.next());
	}

	public void addVrstaPloce(VrstaPloce newVrstaPloce) {
		if (newVrstaPloce == null)
			return;
		if (this.vrstePloca == null)
			this.vrstePloca = new HashSet<VrstaPloce>();
		if (!this.vrstePloca.contains(newVrstaPloce))
			this.vrstePloca.add(newVrstaPloce);
	}

	public void removeVrstaPloce(VrstaPloce oldVrstaPloce) {
		if (oldVrstaPloce == null)
			return;
		if (this.vrstePloca != null)
			if (this.vrstePloca.contains(oldVrstaPloce))
				this.vrstePloca.remove(oldVrstaPloce);
	}

	public void removeAllVrstePloca() {
		if (vrstePloca != null)
			vrstePloca.clear();
	}

	public Collection<Saradnik> getSaradnici() {
		if (saradnici == null)
			saradnici = new HashSet<Saradnik>();
		
		return saradnici;
	}

	public Iterator<Saradnik> getIteratorSaradnici() {
		if (saradnici == null)
			saradnici = new HashSet<Saradnik>();
		
		return saradnici.iterator();
	}

	public void setSaradnici(Collection<Saradnik> newSaradnici) {
		removeAllSaradnici();
		for (Iterator<Saradnik> iter = newSaradnici.iterator(); iter.hasNext();)
			addSaradnik((Saradnik) iter.next());
	}

	public void addSaradnik(Saradnik newSaradnik) {
		if (newSaradnik == null)
			return;
		if (this.saradnici == null)
			this.saradnici = new HashSet<Saradnik>();
		if (!this.saradnici.contains(newSaradnik))
			this.saradnici.add(newSaradnik);
	}

	public void removeSaradnik(Saradnik oldSaradnik) {
		if (oldSaradnik == null)
			return;
		if (this.saradnici != null)
			if (this.saradnici.contains(oldSaradnik))
				this.saradnici.remove(oldSaradnik);
	}

	public void removeAllSaradnici() {
		if (saradnici != null)
			saradnici.clear();
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public float getCena() {
		return cena;
	}

	public void setCena(float cena) {
		this.cena = cena;
	}

	public int getBrojDobavljenihPloca() {
		return brojDobavljenihPloca;
	}

	public void setBrojDobavljenihPloca(int brojDobavljenihPloca) {
		this.brojDobavljenihPloca = brojDobavljenihPloca;
	}

	public int getDatumDobavljanja() {
		return datumDobavljanja;
	}

	public void setDatumDobavljanja(int datumDobavljanja) {
		this.datumDobavljanja = datumDobavljanja;
	}

	public int getVerzija() {
		return verzija;
	}

	public void setVerzija(int verzija) {
		this.verzija = verzija;
	}

}